package com.cxh.dao;

import tk.mybatis.mapper.common.Mapper;

import com.cxh.entity.SkillsOption;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 类说明：
 * @author ChenXH
 * @date   2019-01-04 15:22:57
 */
@Repository("skillsOptionDao")
public interface SkillsOptionDao extends Mapper<SkillsOption> {//需要进行 继承Mapper

	/**
	 * 根据场景Id获得场景信息
	 * @param skillId 场景Id
	 * @return
	 */
	List<SkillsOption> findBySkill(Integer skillId);
	
	/**
	 * 根据场景服务id以及节点名称获得场景节点对象
	 * @param parameter
	 * @return
	 */
	SkillsOption findBySkillAndName(Map<String,Object> parameter);
	
	/**
	 * 根据场景Id获得命令集
	 * @param optionId 场景Id
	 * @return
	 * */
	List<Map<String, Object>> loadByCmd(Integer optionId);
	
	/**
	 * 根据机器人Id获得机器人所有的关键字（企业下）
	 * @param robotId
	 * @return
	 */
	List<Map<String,Object>> loadOptionsByRobotId(Integer robotId);
	
	/**
	 * 根据机器人Id获得机器人所有的关键字
	 * @param robotId
	 * @return
	 */
	List<Map<String,Object>> newloadOptionsByRobotId(Integer robotId);
	
	/**
	 * 根据场景类型Id获得场景选项信息
	 * @param typeId
	 * @return
	 */
	List<SkillsOption> loadOptionBySkillType(Integer typeId);
	
	/**
	 * 根据选项id获得选项信息
	 * @param id
	 * @return
	 */
	SkillsOption loadById(Integer id);
	
	/**
	 * skillId获得信息
	 * @param 
	 * @return
	 */
	List<SkillsOption> loadByMap(String skill);
	
	/**
	 * 根据场景选项Id获得场景类型
	 * @param optionId
	 * @return
	 */
	//SkillsType loadOptionType(Integer optionId);
	
	/**
	 * 根据场景Id获得附加关键字为空的场景选项信息
	 * @param skillId 场景Id
	 * @return
	 */
	List<SkillsOption> findOptionBySkill(Integer skillId);
	
	/**
	 * @描述: TODO 修改
	 * @作者: AnHZ
	 * @日期:2017-12-20
	 * @参数： @param skillsOption    
	 * @return void   
	 * @throws
	 */
	void update(SkillsOption skillsOption);
	
	/**
	 * @描述: TODO 新增
	 * @作者: AnHZ
	 * @日期:2017-12-20
	 * @参数： @param skillsOption    
	 * @return void   
	 * @throws
	 */
	void add(SkillsOption skillsOption);
	
	/**
	 * @描述: TODO 根据场景获取场景应答问题 升序
	 * @作者: AnHZ
	 * @日期:2017-12-21
	 * @参数： @param skill 场景id
	 * @return List<SkillsOption>   
	 */
	List<SkillsOption> loadByMapIdAsc(String skill);
	
	/**
	 * 
	 * @描述: 根据命令集获取所在场景
	 * @作者: WangCY
	 * @日期: 2017-12-29
	 * @修改内容
	 * @参数： @param cmdId
	 * @参数： @return    
	 * @return List<Skills>   
	 * @throws
	 */
	List<SkillsOption> loadskillsByCmd(Integer cmdId);
	/**
	 * @describe 获取事项下，节点内容以及回答信息
	 * @author Y
	 * @政务大厅专用
	 * @param skillId	事项ID
	 * @param keyWord	节点名称
	 * @param key1		0；显示，1不显示
	 * @return
	 */
	List<SkillsOption> findSkillsOptionBySkillAndKeyWordsAndKey(@Param("skillId") int skillId, @Param("keyWord") String keyWord, @Param("key") String key);
	/**
	 * @describe 根据SkillId 获取skilloption 的数据
	 * @author Y
	 * @date 2018年7月6日
	 * @param skillId
	 * @return
	 */
	List<Map<String, Object>> getSkillOptionsBySkillId(@Param("skillId") int skillId, @Param("keyword") String keyword);

	/**
	 * 根据场景与关键字获得场景内容（关键字以等于的形式获得）
	 * @param parameter 参数集
	 * @author cnc
	 * @return
	 */
	SkillsOption findByskillandKeywords(Map<String,Object> parameter);

	/**
	 * @describe 根据Skill Id 删除信息
	 * @author Y
	 * @date 2018年5月24日
	 * @param skillId Skill Id
	 */
	public void delSkillsOptionBySkill(@Param("skillId")Integer skillId);
	/**
	 * @describe 批量插入SkillsOptions
	 * @author Y
	 * @date 2018年5月24日
	 * @param skillsOptions
	 */
	public void insertSkillsOption(@Param("skillsOptions")List<SkillsOption> skillsOptions);

	List<SkillsOption> findSkillsOptionBySkillAndKey1(@Param("skillId") Integer skillId,@Param("key1") String key1);

	/**
	 * @describe 批量修改SkillsOption
	 * @author Y
	 * @date 2018年8月11日
	 * @param skillsOptionList skillsOptions 数组
	 */
    void batchUpdateSkillsOption(@Param("skillsOptionList") List<SkillsOption> skillsOptionList);

    List<Map<String,Object>> findLoadSkillMap(Map<String, Object> map);

}
